0 CpxRelTRS
↳1 RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID), 10 ms)
↳4 CpxWeightedTrs
↳5 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳6 CpxTypedWeightedTrs
↳7 CompletionProof (UPPER BOUND(ID), 53 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 NarrowingProof (BOTH BOUNDS(ID, ID), 2046 ms)
↳10 CpxTypedWeightedCompleteTrs
↳11 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳12 CpxRNTS
↳13 InliningProof (UPPER BOUND(ID), 4308 ms)
↳14 CpxRNTS
↳15 SimplificationProof (BOTH BOUNDS(ID, ID), 37 ms)
↳16 CpxRNTS
↳17 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 103 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 51 ms)
↳22 CpxRNTS
↳23 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 128 ms)
↳26 CpxRNTS
↳27 IntTrsBoundProof (UPPER BOUND(ID), 27 ms)
↳28 CpxRNTS
↳29 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳30 CpxRNTS
↳31 IntTrsBoundProof (UPPER BOUND(ID), 227 ms)
↳32 CpxRNTS
↳33 IntTrsBoundProof (UPPER BOUND(ID), 16 ms)
↳34 CpxRNTS
↳35 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳36 CpxRNTS
↳37 IntTrsBoundProof (UPPER BOUND(ID), 359 ms)
↳38 CpxRNTS
↳39 IntTrsBoundProof (UPPER BOUND(ID), 88 ms)
↳40 CpxRNTS
↳41 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳42 CpxRNTS
↳43 IntTrsBoundProof (UPPER BOUND(ID), 253 ms)
↳44 CpxRNTS
↳45 IntTrsBoundProof (UPPER BOUND(ID), 68 ms)
↳46 CpxRNTS
↳47 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳48 CpxRNTS
↳49 IntTrsBoundProof (UPPER BOUND(ID), 838 ms)
↳50 CpxRNTS
↳51 IntTrsBoundProof (UPPER BOUND(ID), 73 ms)
↳52 CpxRNTS
↳53 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳54 CpxRNTS
↳55 IntTrsBoundProof (UPPER BOUND(ID), 195 ms)
↳56 CpxRNTS
↳57 IntTrsBoundProof (UPPER BOUND(ID), 37 ms)
↳58 CpxRNTS
↳59 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳60 CpxRNTS
↳61 IntTrsBoundProof (UPPER BOUND(ID), 379 ms)
↳62 CpxRNTS
↳63 IntTrsBoundProof (UPPER BOUND(ID), 25 ms)
↳64 CpxRNTS
↳65 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳66 CpxRNTS
↳67 IntTrsBoundProof (UPPER BOUND(ID), 143 ms)
↳68 CpxRNTS
↳69 IntTrsBoundProof (UPPER BOUND(ID), 37 ms)
↳70 CpxRNTS
↳71 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳72 CpxRNTS
↳73 IntTrsBoundProof (UPPER BOUND(ID), 1274 ms)
↳74 CpxRNTS
↳75 IntTrsBoundProof (UPPER BOUND(ID), 198 ms)
↳76 CpxRNTS
↳77 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳78 CpxRNTS
↳79 IntTrsBoundProof (UPPER BOUND(ID), 166 ms)
↳80 CpxRNTS
↳81 IntTrsBoundProof (UPPER BOUND(ID), 16 ms)
↳82 CpxRNTS
↳83 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳84 CpxRNTS
↳85 IntTrsBoundProof (UPPER BOUND(ID), 165 ms)
↳86 CpxRNTS
↳87 IntTrsBoundProof (UPPER BOUND(ID), 46 ms)
↳88 CpxRNTS
↳89 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳90 CpxRNTS
↳91 IntTrsBoundProof (UPPER BOUND(ID), 165 ms)
↳92 CpxRNTS
↳93 IntTrsBoundProof (UPPER BOUND(ID), 27 ms)
↳94 CpxRNTS
↳95 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳96 CpxRNTS
↳97 IntTrsBoundProof (UPPER BOUND(ID), 774 ms)
↳98 CpxRNTS
↳99 IntTrsBoundProof (UPPER BOUND(ID), 107 ms)
↳100 CpxRNTS
↳101 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳102 CpxRNTS
↳103 IntTrsBoundProof (UPPER BOUND(ID), 2721 ms)
↳104 CpxRNTS
↳105 IntTrsBoundProof (UPPER BOUND(ID), 419 ms)
↳106 CpxRNTS
↳107 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳108 CpxRNTS
↳109 IntTrsBoundProof (UPPER BOUND(ID), 628 ms)
↳110 CpxRNTS
↳111 IntTrsBoundProof (UPPER BOUND(ID), 186 ms)
↳112 CpxRNTS
↳113 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳114 CpxRNTS
↳115 IntTrsBoundProof (UPPER BOUND(ID), 763 ms)
↳116 CpxRNTS
↳117 IntTrsBoundProof (UPPER BOUND(ID), 330 ms)
↳118 CpxRNTS
↳119 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳120 CpxRNTS
↳121 IntTrsBoundProof (UPPER BOUND(ID), 711 ms)
↳122 CpxRNTS
↳123 IntTrsBoundProof (UPPER BOUND(ID), 81 ms)
↳124 CpxRNTS
↳125 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳126 CpxRNTS
↳127 IntTrsBoundProof (UPPER BOUND(ID), 334 ms)
↳128 CpxRNTS
↳129 IntTrsBoundProof (UPPER BOUND(ID), 62 ms)
↳130 CpxRNTS
↳131 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳132 CpxRNTS
↳133 IntTrsBoundProof (UPPER BOUND(ID), 816 ms)
↳134 CpxRNTS
↳135 IntTrsBoundProof (UPPER BOUND(ID), 96 ms)
↳136 CpxRNTS
↳137 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳138 CpxRNTS
↳139 IntTrsBoundProof (UPPER BOUND(ID), 102 ms)
↳140 CpxRNTS
↳141 IntTrsBoundProof (UPPER BOUND(ID), 52 ms)
↳142 CpxRNTS
↳143 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳144 CpxRNTS
↳145 IntTrsBoundProof (UPPER BOUND(ID), 273 ms)
↳146 CpxRNTS
↳147 IntTrsBoundProof (UPPER BOUND(ID), 6 ms)
↳148 CpxRNTS
↳149 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳150 CpxRNTS
↳151 IntTrsBoundProof (UPPER BOUND(ID), 508 ms)
↳152 CpxRNTS
↳153 IntTrsBoundProof (UPPER BOUND(ID), 16 ms)
↳154 CpxRNTS
↳155 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳156 CpxRNTS
↳157 IntTrsBoundProof (UPPER BOUND(ID), 205 ms)
↳158 CpxRNTS
↳159 IntTrsBoundProof (UPPER BOUND(ID), 5 ms)
↳160 CpxRNTS
↳161 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳162 CpxRNTS
↳163 IntTrsBoundProof (UPPER BOUND(ID), 98 ms)
↳164 CpxRNTS
↳165 IntTrsBoundProof (UPPER BOUND(ID), 5 ms)
↳166 CpxRNTS
↳167 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳168 CpxRNTS
↳169 IntTrsBoundProof (UPPER BOUND(ID), 132 ms)
↳170 CpxRNTS
↳171 IntTrsBoundProof (UPPER BOUND(ID), 4 ms)
↳172 CpxRNTS
↳173 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳174 CpxRNTS
↳175 IntTrsBoundProof (UPPER BOUND(ID), 1306 ms)
↳176 CpxRNTS
↳177 IntTrsBoundProof (UPPER BOUND(ID), 96 ms)
↳178 CpxRNTS
↳179 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳180 CpxRNTS
↳181 IntTrsBoundProof (UPPER BOUND(ID), 161 ms)
↳182 CpxRNTS
↳183 IntTrsBoundProof (UPPER BOUND(ID), 52 ms)
↳184 CpxRNTS
↳185 ResultPropagationProof (UPPER BOUND(ID), 3 ms)
↳186 CpxRNTS
↳187 IntTrsBoundProof (UPPER BOUND(ID), 194 ms)
↳188 CpxRNTS
↳189 IntTrsBoundProof (UPPER BOUND(ID), 93 ms)
↳190 CpxRNTS
↳191 ResultPropagationProof (UPPER BOUND(ID), 2 ms)
↳192 CpxRNTS
↳193 IntTrsBoundProof (UPPER BOUND(ID), 273 ms)
↳194 CpxRNTS
↳195 IntTrsBoundProof (UPPER BOUND(ID), 117 ms)
↳196 CpxRNTS
↳197 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳198 CpxRNTS
↳199 IntTrsBoundProof (UPPER BOUND(ID), 879 ms)
↳200 CpxRNTS
↳201 IntTrsBoundProof (UPPER BOUND(ID), 3 ms)
↳202 CpxRNTS
↳203 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳204 CpxRNTS
↳205 IntTrsBoundProof (UPPER BOUND(ID), 2431 ms)
↳206 CpxRNTS
↳207 IntTrsBoundProof (UPPER BOUND(ID), 196 ms)
↳208 CpxRNTS
↳209 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳210 CpxRNTS
↳211 IntTrsBoundProof (UPPER BOUND(ID), 120 ms)
↳212 CpxRNTS
↳213 IntTrsBoundProof (UPPER BOUND(ID), 4 ms)
↳214 CpxRNTS
↳215 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳216 CpxRNTS
↳217 IntTrsBoundProof (UPPER BOUND(ID), 353 ms)
↳218 CpxRNTS
↳219 IntTrsBoundProof (UPPER BOUND(ID), 86 ms)
↳220 CpxRNTS
↳221 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳222 CpxRNTS
↳223 IntTrsBoundProof (UPPER BOUND(ID), 933 ms)
↳224 CpxRNTS
↳225 IntTrsBoundProof (UPPER BOUND(ID), 75 ms)
↳226 CpxRNTS
↳227 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳228 CpxRNTS
↳229 IntTrsBoundProof (UPPER BOUND(ID), 881 ms)
↳230 CpxRNTS
↳231 IntTrsBoundProof (UPPER BOUND(ID), 3 ms)
↳232 CpxRNTS
↳233 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳234 CpxRNTS
↳235 IntTrsBoundProof (UPPER BOUND(ID), 72 ms)
↳236 CpxRNTS
↳237 IntTrsBoundProof (UPPER BOUND(ID), 62 ms)
↳238 CpxRNTS
↳239 ResultPropagationProof (UPPER BOUND(ID), 1 ms)
↳240 CpxRNTS
↳241 IntTrsBoundProof (UPPER BOUND(ID), 1159 ms)
↳242 CpxRNTS
↳243 IntTrsBoundProof (UPPER BOUND(ID), 400 ms)
↳244 CpxRNTS
↳245 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳246 CpxRNTS
↳247 IntTrsBoundProof (UPPER BOUND(ID), 150 ms)
↳248 CpxRNTS
↳249 IntTrsBoundProof (UPPER BOUND(ID), 24 ms)
↳250 CpxRNTS
↳251 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳252 CpxRNTS
↳253 IntTrsBoundProof (UPPER BOUND(ID), 1243 ms)
↳254 CpxRNTS
↳255 IntTrsBoundProof (UPPER BOUND(ID), 73 ms)
↳256 CpxRNTS
↳257 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳258 CpxRNTS
↳259 IntTrsBoundProof (UPPER BOUND(ID), 5772 ms)
↳260 CpxRNTS
↳261 IntTrsBoundProof (UPPER BOUND(ID), 640 ms)
↳262 CpxRNTS
↳263 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳264 CpxRNTS
↳265 IntTrsBoundProof (UPPER BOUND(ID), 351 ms)
↳266 CpxRNTS
↳267 IntTrsBoundProof (UPPER BOUND(ID), 126 ms)
↳268 CpxRNTS
↳269 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳270 CpxRNTS
↳271 IntTrsBoundProof (UPPER BOUND(ID), 791 ms)
↳272 CpxRNTS
↳273 IntTrsBoundProof (UPPER BOUND(ID), 385 ms)
↳274 CpxRNTS
↳275 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳276 CpxRNTS
↳277 IntTrsBoundProof (UPPER BOUND(ID), 1049 ms)
↳278 CpxRNTS
↳279 IntTrsBoundProof (UPPER BOUND(ID), 42 ms)
↳280 CpxRNTS
↳281 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳282 CpxRNTS
↳283 IntTrsBoundProof (UPPER BOUND(ID), 343 ms)
↳284 CpxRNTS
↳285 IntTrsBoundProof (UPPER BOUND(ID), 86 ms)
↳286 CpxRNTS
↳287 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳288 CpxRNTS
↳289 IntTrsBoundProof (UPPER BOUND(ID), 160 ms)
↳290 CpxRNTS
↳291 IntTrsBoundProof (UPPER BOUND(ID), 81 ms)
↳292 CpxRNTS
↳293 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳294 CpxRNTS
↳295 IntTrsBoundProof (UPPER BOUND(ID), 208 ms)
↳296 CpxRNTS
↳297 IntTrsBoundProof (UPPER BOUND(ID), 23 ms)
↳298 CpxRNTS
↳299 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳300 CpxRNTS
↳301 IntTrsBoundProof (UPPER BOUND(ID), 1080 ms)
↳302 CpxRNTS
↳303 IntTrsBoundProof (UPPER BOUND(ID), 105 ms)
↳304 CpxRNTS
↳305 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳306 CpxRNTS
↳307 IntTrsBoundProof (UPPER BOUND(ID), 229 ms)
↳308 CpxRNTS
↳309 IntTrsBoundProof (UPPER BOUND(ID), 65 ms)
↳310 CpxRNTS
↳311 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳312 CpxRNTS
↳313 IntTrsBoundProof (UPPER BOUND(ID), 362 ms)
↳314 CpxRNTS
↳315 IntTrsBoundProof (UPPER BOUND(ID), 96 ms)
↳316 CpxRNTS
↳317 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳318 CpxRNTS
↳319 IntTrsBoundProof (UPPER BOUND(ID), 861 ms)
↳320 CpxRNTS
↳321 IntTrsBoundProof (UPPER BOUND(ID), 0 ms)
↳322 CpxRNTS
↳323 ResultPropagationProof (UPPER BOUND(ID), 1 ms)
↳324 CpxRNTS
↳325 IntTrsBoundProof (UPPER BOUND(ID), 1112 ms)
↳326 CpxRNTS
↳327 IntTrsBoundProof (UPPER BOUND(ID), 27 ms)
↳328 CpxRNTS
↳329 FinalProof (⇔, 0 ms)
↳330 BOUNDS(1, n^5)
#abs(#0) → #0
#abs(#neg(@x)) → #pos(@x)
#abs(#pos(@x)) → #pos(@x)
#abs(#s(@x)) → #pos(#s(@x))
#equal(@x, @y) → #eq(@x, @y)
#greater(@x, @y) → #ckgt(#compare(@x, @y))
#less(@x, @y) → #cklt(#compare(@x, @y))
*(@x, @y) → #mult(@x, @y)
+(@x, @y) → #add(@x, @y)
-(@x, @y) → #sub(@x, @y)
add(@b1, @b2) → add'(@b1, @b2, #abs(#0))
add'(@b1, @b2, @r) → add'#1(@b1, @b2, @r)
add'#1(::(@x, @xs), @b2, @r) → add'#2(@b2, @r, @x, @xs)
add'#1(nil, @b2, @r) → nil
add'#2(::(@y, @ys), @r, @x, @xs) → add'#3(sum(@x, @y, @r), @xs, @ys)
add'#2(nil, @r, @x, @xs) → nil
add'#3(tuple#2(@z, @r'), @xs, @ys) → ::(@z, add'(@xs, @ys, @r'))
bitToInt(@b) → bitToInt'(@b, #abs(#pos(#s(#0))))
bitToInt'(@b, @n) → bitToInt'#1(@b, @n)
bitToInt'#1(::(@x, @xs), @n) → +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0))))))
bitToInt'#1(nil, @n) → #abs(#0)
compare(@b1, @b2) → compare#1(@b1, @b2)
compare#1(::(@x, @xs), @b2) → compare#2(@b2, @x, @xs)
compare#1(nil, @b2) → #abs(#0)
compare#2(::(@y, @ys), @x, @xs) → compare#3(compare(@xs, @ys), @x, @y)
compare#2(nil, @x, @xs) → #abs(#0)
compare#3(@r, @x, @y) → compare#4(#equal(@r, #0), @r, @x, @y)
compare#4(#false, @r, @x, @y) → @r
compare#4(#true, @r, @x, @y) → compare#5(#less(@x, @y), @x, @y)
compare#5(#false, @x, @y) → compare#6(#greater(@x, @y))
compare#5(#true, @x, @y) → -(#0, #pos(#s(#0)))
compare#6(#false) → #abs(#0)
compare#6(#true) → #abs(#pos(#s(#0)))
diff(@x, @y, @r) → tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0)))
diff#1(#false) → #abs(#0)
diff#1(#true) → #abs(#pos(#s(#0)))
div(@x, @y) → #div(@x, @y)
leq(@b1, @b2) → #less(compare(@b1, @b2), #pos(#s(#0)))
mod(@x, @y) → -(@x, *(@x, div(@x, @y)))
mult(@b1, @b2) → mult#1(@b1, @b2)
mult#1(::(@x, @xs), @b2) → mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x)
mult#1(nil, @b2) → nil
mult#2(@zs, @b2, @x) → mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs)
mult#3(#false, @b2, @zs) → @zs
mult#3(#true, @b2, @zs) → add(@b2, @zs)
mult3(@b1, @b2, @b3) → mult(mult(@b1, @b2), @b2)
sub(@b1, @b2) → sub#1(sub'(@b1, @b2, #abs(#0)))
sub#1(tuple#2(@b, @_@1)) → @b
sub'(@b1, @b2, @r) → sub'#1(@b1, @b2, @r)
sub'#1(::(@x, @xs), @b2, @r) → sub'#2(@b2, @r, @x, @xs)
sub'#1(nil, @b2, @r) → tuple#2(nil, @r)
sub'#2(::(@y, @ys), @r, @x, @xs) → sub'#3(diff(@x, @y, @r), @xs, @ys)
sub'#2(nil, @r, @x, @xs) → tuple#2(nil, @r)
sub'#3(tuple#2(@z, @r'), @xs, @ys) → sub'#4(sub'(@xs, @ys, @r'), @z)
sub'#4(tuple#2(@zs, @s), @z) → tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s)
sub'#5(#false, @z, @zs) → ::(@z, @zs)
sub'#5(#true, @z, @zs) → ::(#abs(#0), @zs)
sum(@x, @y, @r) → sum#1(+(+(@x, @y), @r))
sum#1(@s) → sum#2(#equal(@s, #0), @s)
sum#2(#false, @s) → sum#3(#equal(@s, #pos(#s(#0))), @s)
sum#2(#true, @s) → tuple#2(#abs(#0), #abs(#0))
sum#3(#false, @s) → sum#4(#equal(@s, #pos(#s(#s(#0)))))
sum#3(#true, @s) → tuple#2(#abs(#pos(#s(#0))), #abs(#0))
sum#4(#false) → tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0))))
sum#4(#true) → tuple#2(#abs(#0), #abs(#pos(#s(#0))))
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#and(#false, #false) → #false
#and(#false, #true) → #false
#and(#true, #false) → #false
#and(#true, #true) → #true
#ckgt(#EQ) → #false
#ckgt(#GT) → #true
#ckgt(#LT) → #false
#cklt(#EQ) → #false
#cklt(#GT) → #false
#cklt(#LT) → #true
#compare(#0, #0) → #EQ
#compare(#0, #neg(@y)) → #GT
#compare(#0, #pos(@y)) → #LT
#compare(#0, #s(@y)) → #LT
#compare(#neg(@x), #0) → #LT
#compare(#neg(@x), #neg(@y)) → #compare(@y, @x)
#compare(#neg(@x), #pos(@y)) → #LT
#compare(#pos(@x), #0) → #GT
#compare(#pos(@x), #neg(@y)) → #GT
#compare(#pos(@x), #pos(@y)) → #compare(@x, @y)
#compare(#s(@x), #0) → #GT
#compare(#s(@x), #s(@y)) → #compare(@x, @y)
#div(#0, #0) → #divByZero
#div(#0, #neg(@y)) → #0
#div(#0, #pos(@y)) → #0
#div(#neg(@x), #0) → #divByZero
#div(#neg(@x), #neg(@y)) → #pos(#natdiv(@x, @y))
#div(#neg(@x), #pos(@y)) → #neg(#natdiv(@x, @y))
#div(#pos(@x), #0) → #divByZero
#div(#pos(@x), #neg(@y)) → #neg(#natdiv(@x, @y))
#div(#pos(@x), #pos(@y)) → #pos(#natdiv(@x, @y))
#eq(#0, #0) → #true
#eq(#0, #neg(@y)) → #false
#eq(#0, #pos(@y)) → #false
#eq(#0, #s(@y)) → #false
#eq(#neg(@x), #0) → #false
#eq(#neg(@x), #neg(@y)) → #eq(@x, @y)
#eq(#neg(@x), #pos(@y)) → #false
#eq(#pos(@x), #0) → #false
#eq(#pos(@x), #neg(@y)) → #false
#eq(#pos(@x), #pos(@y)) → #eq(@x, @y)
#eq(#s(@x), #0) → #false
#eq(#s(@x), #s(@y)) → #eq(@x, @y)
#eq(::(@x_1, @x_2), ::(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2))
#eq(::(@x_1, @x_2), nil) → #false
#eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #false
#eq(nil, ::(@y_1, @y_2)) → #false
#eq(nil, nil) → #true
#eq(nil, tuple#2(@y_1, @y_2)) → #false
#eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) → #false
#eq(tuple#2(@x_1, @x_2), nil) → #false
#eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natdiv(#0, #0) → #divByZero
#natdiv(#s(@x), #s(@y)) → #s(#natdiv(#natsub(@x, @y), #s(@y)))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#natsub(@x, #0) → @x
#natsub(#s(@x), #s(@y)) → #natsub(@x, @y)
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#sub(@x, #0) → @x
#sub(@x, #neg(@y)) → #add(@x, #pos(@y))
#sub(@x, #pos(@y)) → #add(@x, #neg(@y))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))
#abs(#0) → #0 [1]
#abs(#neg(@x)) → #pos(@x) [1]
#abs(#pos(@x)) → #pos(@x) [1]
#abs(#s(@x)) → #pos(#s(@x)) [1]
#equal(@x, @y) → #eq(@x, @y) [1]
#greater(@x, @y) → #ckgt(#compare(@x, @y)) [1]
#less(@x, @y) → #cklt(#compare(@x, @y)) [1]
*(@x, @y) → #mult(@x, @y) [1]
+(@x, @y) → #add(@x, @y) [1]
-(@x, @y) → #sub(@x, @y) [1]
add(@b1, @b2) → add'(@b1, @b2, #abs(#0)) [1]
add'(@b1, @b2, @r) → add'#1(@b1, @b2, @r) [1]
add'#1(::(@x, @xs), @b2, @r) → add'#2(@b2, @r, @x, @xs) [1]
add'#1(nil, @b2, @r) → nil [1]
add'#2(::(@y, @ys), @r, @x, @xs) → add'#3(sum(@x, @y, @r), @xs, @ys) [1]
add'#2(nil, @r, @x, @xs) → nil [1]
add'#3(tuple#2(@z, @r'), @xs, @ys) → ::(@z, add'(@xs, @ys, @r')) [1]
bitToInt(@b) → bitToInt'(@b, #abs(#pos(#s(#0)))) [1]
bitToInt'(@b, @n) → bitToInt'#1(@b, @n) [1]
bitToInt'#1(::(@x, @xs), @n) → +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0)))))) [1]
bitToInt'#1(nil, @n) → #abs(#0) [1]
compare(@b1, @b2) → compare#1(@b1, @b2) [1]
compare#1(::(@x, @xs), @b2) → compare#2(@b2, @x, @xs) [1]
compare#1(nil, @b2) → #abs(#0) [1]
compare#2(::(@y, @ys), @x, @xs) → compare#3(compare(@xs, @ys), @x, @y) [1]
compare#2(nil, @x, @xs) → #abs(#0) [1]
compare#3(@r, @x, @y) → compare#4(#equal(@r, #0), @r, @x, @y) [1]
compare#4(#false, @r, @x, @y) → @r [1]
compare#4(#true, @r, @x, @y) → compare#5(#less(@x, @y), @x, @y) [1]
compare#5(#false, @x, @y) → compare#6(#greater(@x, @y)) [1]
compare#5(#true, @x, @y) → -(#0, #pos(#s(#0))) [1]
compare#6(#false) → #abs(#0) [1]
compare#6(#true) → #abs(#pos(#s(#0))) [1]
diff(@x, @y, @r) → tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0))) [1]
diff#1(#false) → #abs(#0) [1]
diff#1(#true) → #abs(#pos(#s(#0))) [1]
div(@x, @y) → #div(@x, @y) [1]
leq(@b1, @b2) → #less(compare(@b1, @b2), #pos(#s(#0))) [1]
mod(@x, @y) → -(@x, *(@x, div(@x, @y))) [1]
mult(@b1, @b2) → mult#1(@b1, @b2) [1]
mult#1(::(@x, @xs), @b2) → mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) [1]
mult#1(nil, @b2) → nil [1]
mult#2(@zs, @b2, @x) → mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) [1]
mult#3(#false, @b2, @zs) → @zs [1]
mult#3(#true, @b2, @zs) → add(@b2, @zs) [1]
mult3(@b1, @b2, @b3) → mult(mult(@b1, @b2), @b2) [1]
sub(@b1, @b2) → sub#1(sub'(@b1, @b2, #abs(#0))) [1]
sub#1(tuple#2(@b, @_@1)) → @b [1]
sub'(@b1, @b2, @r) → sub'#1(@b1, @b2, @r) [1]
sub'#1(::(@x, @xs), @b2, @r) → sub'#2(@b2, @r, @x, @xs) [1]
sub'#1(nil, @b2, @r) → tuple#2(nil, @r) [1]
sub'#2(::(@y, @ys), @r, @x, @xs) → sub'#3(diff(@x, @y, @r), @xs, @ys) [1]
sub'#2(nil, @r, @x, @xs) → tuple#2(nil, @r) [1]
sub'#3(tuple#2(@z, @r'), @xs, @ys) → sub'#4(sub'(@xs, @ys, @r'), @z) [1]
sub'#4(tuple#2(@zs, @s), @z) → tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) [1]
sub'#5(#false, @z, @zs) → ::(@z, @zs) [1]
sub'#5(#true, @z, @zs) → ::(#abs(#0), @zs) [1]
sum(@x, @y, @r) → sum#1(+(+(@x, @y), @r)) [1]
sum#1(@s) → sum#2(#equal(@s, #0), @s) [1]
sum#2(#false, @s) → sum#3(#equal(@s, #pos(#s(#0))), @s) [1]
sum#2(#true, @s) → tuple#2(#abs(#0), #abs(#0)) [1]
sum#3(#false, @s) → sum#4(#equal(@s, #pos(#s(#s(#0))))) [1]
sum#3(#true, @s) → tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1]
sum#4(#false) → tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1]
sum#4(#true) → tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1]
#add(#0, @y) → @y [0]
#add(#neg(#s(#0)), @y) → #pred(@y) [0]
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y)) [0]
#add(#pos(#s(#0)), @y) → #succ(@y) [0]
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y)) [0]
#and(#false, #false) → #false [0]
#and(#false, #true) → #false [0]
#and(#true, #false) → #false [0]
#and(#true, #true) → #true [0]
#ckgt(#EQ) → #false [0]
#ckgt(#GT) → #true [0]
#ckgt(#LT) → #false [0]
#cklt(#EQ) → #false [0]
#cklt(#GT) → #false [0]
#cklt(#LT) → #true [0]
#compare(#0, #0) → #EQ [0]
#compare(#0, #neg(@y)) → #GT [0]
#compare(#0, #pos(@y)) → #LT [0]
#compare(#0, #s(@y)) → #LT [0]
#compare(#neg(@x), #0) → #LT [0]
#compare(#neg(@x), #neg(@y)) → #compare(@y, @x) [0]
#compare(#neg(@x), #pos(@y)) → #LT [0]
#compare(#pos(@x), #0) → #GT [0]
#compare(#pos(@x), #neg(@y)) → #GT [0]
#compare(#pos(@x), #pos(@y)) → #compare(@x, @y) [0]
#compare(#s(@x), #0) → #GT [0]
#compare(#s(@x), #s(@y)) → #compare(@x, @y) [0]
#div(#0, #0) → #divByZero [0]
#div(#0, #neg(@y)) → #0 [0]
#div(#0, #pos(@y)) → #0 [0]
#div(#neg(@x), #0) → #divByZero [0]
#div(#neg(@x), #neg(@y)) → #pos(#natdiv(@x, @y)) [0]
#div(#neg(@x), #pos(@y)) → #neg(#natdiv(@x, @y)) [0]
#div(#pos(@x), #0) → #divByZero [0]
#div(#pos(@x), #neg(@y)) → #neg(#natdiv(@x, @y)) [0]
#div(#pos(@x), #pos(@y)) → #pos(#natdiv(@x, @y)) [0]
#eq(#0, #0) → #true [0]
#eq(#0, #neg(@y)) → #false [0]
#eq(#0, #pos(@y)) → #false [0]
#eq(#0, #s(@y)) → #false [0]
#eq(#neg(@x), #0) → #false [0]
#eq(#neg(@x), #neg(@y)) → #eq(@x, @y) [0]
#eq(#neg(@x), #pos(@y)) → #false [0]
#eq(#pos(@x), #0) → #false [0]
#eq(#pos(@x), #neg(@y)) → #false [0]
#eq(#pos(@x), #pos(@y)) → #eq(@x, @y) [0]
#eq(#s(@x), #0) → #false [0]
#eq(#s(@x), #s(@y)) → #eq(@x, @y) [0]
#eq(::(@x_1, @x_2), ::(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0]
#eq(::(@x_1, @x_2), nil) → #false [0]
#eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #false [0]
#eq(nil, ::(@y_1, @y_2)) → #false [0]
#eq(nil, nil) → #true [0]
#eq(nil, tuple#2(@y_1, @y_2)) → #false [0]
#eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) → #false [0]
#eq(tuple#2(@x_1, @x_2), nil) → #false [0]
#eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0]
#mult(#0, #0) → #0 [0]
#mult(#0, #neg(@y)) → #0 [0]
#mult(#0, #pos(@y)) → #0 [0]
#mult(#neg(@x), #0) → #0 [0]
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y)) [0]
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #0) → #0 [0]
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y)) [0]
#natdiv(#0, #0) → #divByZero [0]
#natdiv(#s(@x), #s(@y)) → #s(#natdiv(#natsub(@x, @y), #s(@y))) [0]
#natmult(#0, @y) → #0 [0]
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y)) [0]
#natsub(@x, #0) → @x [0]
#natsub(#s(@x), #s(@y)) → #natsub(@x, @y) [0]
#pred(#0) → #neg(#s(#0)) [0]
#pred(#neg(#s(@x))) → #neg(#s(#s(@x))) [0]
#pred(#pos(#s(#0))) → #0 [0]
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x)) [0]
#sub(@x, #0) → @x [0]
#sub(@x, #neg(@y)) → #add(@x, #pos(@y)) [0]
#sub(@x, #pos(@y)) → #add(@x, #neg(@y)) [0]
#succ(#0) → #pos(#s(#0)) [0]
#succ(#neg(#s(#0))) → #0 [0]
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x)) [0]
#succ(#pos(#s(@x))) → #pos(#s(#s(@x))) [0]
| * => times |
| + => plus |
| - => minus |
#abs(#0) → #0 [1]
#abs(#neg(@x)) → #pos(@x) [1]
#abs(#pos(@x)) → #pos(@x) [1]
#abs(#s(@x)) → #pos(#s(@x)) [1]
#equal(@x, @y) → #eq(@x, @y) [1]
#greater(@x, @y) → #ckgt(#compare(@x, @y)) [1]
#less(@x, @y) → #cklt(#compare(@x, @y)) [1]
times(@x, @y) → #mult(@x, @y) [1]
plus(@x, @y) → #add(@x, @y) [1]
minus(@x, @y) → #sub(@x, @y) [1]
add(@b1, @b2) → add'(@b1, @b2, #abs(#0)) [1]
add'(@b1, @b2, @r) → add'#1(@b1, @b2, @r) [1]
add'#1(::(@x, @xs), @b2, @r) → add'#2(@b2, @r, @x, @xs) [1]
add'#1(nil, @b2, @r) → nil [1]
add'#2(::(@y, @ys), @r, @x, @xs) → add'#3(sum(@x, @y, @r), @xs, @ys) [1]
add'#2(nil, @r, @x, @xs) → nil [1]
add'#3(tuple#2(@z, @r'), @xs, @ys) → ::(@z, add'(@xs, @ys, @r')) [1]
bitToInt(@b) → bitToInt'(@b, #abs(#pos(#s(#0)))) [1]
bitToInt'(@b, @n) → bitToInt'#1(@b, @n) [1]
bitToInt'#1(::(@x, @xs), @n) → plus(times(@x, @n), bitToInt'(@xs, times(@n, #pos(#s(#s(#0)))))) [1]
bitToInt'#1(nil, @n) → #abs(#0) [1]
compare(@b1, @b2) → compare#1(@b1, @b2) [1]
compare#1(::(@x, @xs), @b2) → compare#2(@b2, @x, @xs) [1]
compare#1(nil, @b2) → #abs(#0) [1]
compare#2(::(@y, @ys), @x, @xs) → compare#3(compare(@xs, @ys), @x, @y) [1]
compare#2(nil, @x, @xs) → #abs(#0) [1]
compare#3(@r, @x, @y) → compare#4(#equal(@r, #0), @r, @x, @y) [1]
compare#4(#false, @r, @x, @y) → @r [1]
compare#4(#true, @r, @x, @y) → compare#5(#less(@x, @y), @x, @y) [1]
compare#5(#false, @x, @y) → compare#6(#greater(@x, @y)) [1]
compare#5(#true, @x, @y) → minus(#0, #pos(#s(#0))) [1]
compare#6(#false) → #abs(#0) [1]
compare#6(#true) → #abs(#pos(#s(#0))) [1]
diff(@x, @y, @r) → tuple#2(mod(plus(plus(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(minus(minus(@x, @y), @r), #0))) [1]
diff#1(#false) → #abs(#0) [1]
diff#1(#true) → #abs(#pos(#s(#0))) [1]
div(@x, @y) → #div(@x, @y) [1]
leq(@b1, @b2) → #less(compare(@b1, @b2), #pos(#s(#0))) [1]
mod(@x, @y) → minus(@x, times(@x, div(@x, @y))) [1]
mult(@b1, @b2) → mult#1(@b1, @b2) [1]
mult#1(::(@x, @xs), @b2) → mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) [1]
mult#1(nil, @b2) → nil [1]
mult#2(@zs, @b2, @x) → mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) [1]
mult#3(#false, @b2, @zs) → @zs [1]
mult#3(#true, @b2, @zs) → add(@b2, @zs) [1]
mult3(@b1, @b2, @b3) → mult(mult(@b1, @b2), @b2) [1]
sub(@b1, @b2) → sub#1(sub'(@b1, @b2, #abs(#0))) [1]
sub#1(tuple#2(@b, @_@1)) → @b [1]
sub'(@b1, @b2, @r) → sub'#1(@b1, @b2, @r) [1]
sub'#1(::(@x, @xs), @b2, @r) → sub'#2(@b2, @r, @x, @xs) [1]
sub'#1(nil, @b2, @r) → tuple#2(nil, @r) [1]
sub'#2(::(@y, @ys), @r, @x, @xs) → sub'#3(diff(@x, @y, @r), @xs, @ys) [1]
sub'#2(nil, @r, @x, @xs) → tuple#2(nil, @r) [1]
sub'#3(tuple#2(@z, @r'), @xs, @ys) → sub'#4(sub'(@xs, @ys, @r'), @z) [1]
sub'#4(tuple#2(@zs, @s), @z) → tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) [1]
sub'#5(#false, @z, @zs) → ::(@z, @zs) [1]
sub'#5(#true, @z, @zs) → ::(#abs(#0), @zs) [1]
sum(@x, @y, @r) → sum#1(plus(plus(@x, @y), @r)) [1]
sum#1(@s) → sum#2(#equal(@s, #0), @s) [1]
sum#2(#false, @s) → sum#3(#equal(@s, #pos(#s(#0))), @s) [1]
sum#2(#true, @s) → tuple#2(#abs(#0), #abs(#0)) [1]
sum#3(#false, @s) → sum#4(#equal(@s, #pos(#s(#s(#0))))) [1]
sum#3(#true, @s) → tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1]
sum#4(#false) → tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1]
sum#4(#true) → tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1]
#add(#0, @y) → @y [0]
#add(#neg(#s(#0)), @y) → #pred(@y) [0]
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y)) [0]
#add(#pos(#s(#0)), @y) → #succ(@y) [0]
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y)) [0]
#and(#false, #false) → #false [0]
#and(#false, #true) → #false [0]
#and(#true, #false) → #false [0]
#and(#true, #true) → #true [0]
#ckgt(#EQ) → #false [0]
#ckgt(#GT) → #true [0]
#ckgt(#LT) → #false [0]
#cklt(#EQ) → #false [0]
#cklt(#GT) → #false [0]
#cklt(#LT) → #true [0]
#compare(#0, #0) → #EQ [0]
#compare(#0, #neg(@y)) → #GT [0]
#compare(#0, #pos(@y)) → #LT [0]
#compare(#0, #s(@y)) → #LT [0]
#compare(#neg(@x), #0) → #LT [0]
#compare(#neg(@x), #neg(@y)) → #compare(@y, @x) [0]
#compare(#neg(@x), #pos(@y)) → #LT [0]
#compare(#pos(@x), #0) → #GT [0]
#compare(#pos(@x), #neg(@y)) → #GT [0]
#compare(#pos(@x), #pos(@y)) → #compare(@x, @y) [0]
#compare(#s(@x), #0) → #GT [0]
#compare(#s(@x), #s(@y)) → #compare(@x, @y) [0]
#div(#0, #0) → #divByZero [0]
#div(#0, #neg(@y)) → #0 [0]
#div(#0, #pos(@y)) → #0 [0]
#div(#neg(@x), #0) → #divByZero [0]
#div(#neg(@x), #neg(@y)) → #pos(#natdiv(@x, @y)) [0]
#div(#neg(@x), #pos(@y)) → #neg(#natdiv(@x, @y)) [0]
#div(#pos(@x), #0) → #divByZero [0]
#div(#pos(@x), #neg(@y)) → #neg(#natdiv(@x, @y)) [0]
#div(#pos(@x), #pos(@y)) → #pos(#natdiv(@x, @y)) [0]
#eq(#0, #0) → #true [0]
#eq(#0, #neg(@y)) → #false [0]
#eq(#0, #pos(@y)) → #false [0]
#eq(#0, #s(@y)) → #false [0]
#eq(#neg(@x), #0) → #false [0]
#eq(#neg(@x), #neg(@y)) → #eq(@x, @y) [0]
#eq(#neg(@x), #pos(@y)) → #false [0]
#eq(#pos(@x), #0) → #false [0]
#eq(#pos(@x), #neg(@y)) → #false [0]
#eq(#pos(@x), #pos(@y)) → #eq(@x, @y) [0]
#eq(#s(@x), #0) → #false [0]
#eq(#s(@x), #s(@y)) → #eq(@x, @y) [0]
#eq(::(@x_1, @x_2), ::(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0]
#eq(::(@x_1, @x_2), nil) → #false [0]
#eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #false [0]
#eq(nil, ::(@y_1, @y_2)) → #false [0]
#eq(nil, nil) → #true [0]
#eq(nil, tuple#2(@y_1, @y_2)) → #false [0]
#eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) → #false [0]
#eq(tuple#2(@x_1, @x_2), nil) → #false [0]
#eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0]
#mult(#0, #0) → #0 [0]
#mult(#0, #neg(@y)) → #0 [0]
#mult(#0, #pos(@y)) → #0 [0]
#mult(#neg(@x), #0) → #0 [0]
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y)) [0]
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #0) → #0 [0]
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y)) [0]
#natdiv(#0, #0) → #divByZero [0]
#natdiv(#s(@x), #s(@y)) → #s(#natdiv(#natsub(@x, @y), #s(@y))) [0]
#natmult(#0, @y) → #0 [0]
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y)) [0]
#natsub(@x, #0) → @x [0]
#natsub(#s(@x), #s(@y)) → #natsub(@x, @y) [0]
#pred(#0) → #neg(#s(#0)) [0]
#pred(#neg(#s(@x))) → #neg(#s(#s(@x))) [0]
#pred(#pos(#s(#0))) → #0 [0]
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x)) [0]
#sub(@x, #0) → @x [0]
#sub(@x, #neg(@y)) → #add(@x, #pos(@y)) [0]
#sub(@x, #pos(@y)) → #add(@x, #neg(@y)) [0]
#succ(#0) → #pos(#s(#0)) [0]
#succ(#neg(#s(#0))) → #0 [0]
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x)) [0]
#succ(#pos(#s(@x))) → #pos(#s(#s(@x))) [0]
#abs(#0) → #0 [1]
#abs(#neg(@x)) → #pos(@x) [1]
#abs(#pos(@x)) → #pos(@x) [1]
#abs(#s(@x)) → #pos(#s(@x)) [1]
#equal(@x, @y) → #eq(@x, @y) [1]
#greater(@x, @y) → #ckgt(#compare(@x, @y)) [1]
#less(@x, @y) → #cklt(#compare(@x, @y)) [1]
times(@x, @y) → #mult(@x, @y) [1]
plus(@x, @y) → #add(@x, @y) [1]
minus(@x, @y) → #sub(@x, @y) [1]
add(@b1, @b2) → add'(@b1, @b2, #abs(#0)) [1]
add'(@b1, @b2, @r) → add'#1(@b1, @b2, @r) [1]
add'#1(::(@x, @xs), @b2, @r) → add'#2(@b2, @r, @x, @xs) [1]
add'#1(nil, @b2, @r) → nil [1]
add'#2(::(@y, @ys), @r, @x, @xs) → add'#3(sum(@x, @y, @r), @xs, @ys) [1]
add'#2(nil, @r, @x, @xs) → nil [1]
add'#3(tuple#2(@z, @r'), @xs, @ys) → ::(@z, add'(@xs, @ys, @r')) [1]
bitToInt(@b) → bitToInt'(@b, #abs(#pos(#s(#0)))) [1]
bitToInt'(@b, @n) → bitToInt'#1(@b, @n) [1]
bitToInt'#1(::(@x, @xs), @n) → plus(times(@x, @n), bitToInt'(@xs, times(@n, #pos(#s(#s(#0)))))) [1]
bitToInt'#1(nil, @n) → #abs(#0) [1]
compare(@b1, @b2) → compare#1(@b1, @b2) [1]
compare#1(::(@x, @xs), @b2) → compare#2(@b2, @x, @xs) [1]
compare#1(nil, @b2) → #abs(#0) [1]
compare#2(::(@y, @ys), @x, @xs) → compare#3(compare(@xs, @ys), @x, @y) [1]
compare#2(nil, @x, @xs) → #abs(#0) [1]
compare#3(@r, @x, @y) → compare#4(#equal(@r, #0), @r, @x, @y) [1]
compare#4(#false, @r, @x, @y) → @r [1]
compare#4(#true, @r, @x, @y) → compare#5(#less(@x, @y), @x, @y) [1]
compare#5(#false, @x, @y) → compare#6(#greater(@x, @y)) [1]
compare#5(#true, @x, @y) → minus(#0, #pos(#s(#0))) [1]
compare#6(#false) → #abs(#0) [1]
compare#6(#true) → #abs(#pos(#s(#0))) [1]
diff(@x, @y, @r) → tuple#2(mod(plus(plus(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(minus(minus(@x, @y), @r), #0))) [1]
diff#1(#false) → #abs(#0) [1]
diff#1(#true) → #abs(#pos(#s(#0))) [1]
div(@x, @y) → #div(@x, @y) [1]
leq(@b1, @b2) → #less(compare(@b1, @b2), #pos(#s(#0))) [1]
mod(@x, @y) → minus(@x, times(@x, div(@x, @y))) [1]
mult(@b1, @b2) → mult#1(@b1, @b2) [1]
mult#1(::(@x, @xs), @b2) → mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) [1]
mult#1(nil, @b2) → nil [1]
mult#2(@zs, @b2, @x) → mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) [1]
mult#3(#false, @b2, @zs) → @zs [1]
mult#3(#true, @b2, @zs) → add(@b2, @zs) [1]
mult3(@b1, @b2, @b3) → mult(mult(@b1, @b2), @b2) [1]
sub(@b1, @b2) → sub#1(sub'(@b1, @b2, #abs(#0))) [1]
sub#1(tuple#2(@b, @_@1)) → @b [1]
sub'(@b1, @b2, @r) → sub'#1(@b1, @b2, @r) [1]
sub'#1(::(@x, @xs), @b2, @r) → sub'#2(@b2, @r, @x, @xs) [1]
sub'#1(nil, @b2, @r) → tuple#2(nil, @r) [1]
sub'#2(::(@y, @ys), @r, @x, @xs) → sub'#3(diff(@x, @y, @r), @xs, @ys) [1]
sub'#2(nil, @r, @x, @xs) → tuple#2(nil, @r) [1]
sub'#3(tuple#2(@z, @r'), @xs, @ys) → sub'#4(sub'(@xs, @ys, @r'), @z) [1]
sub'#4(tuple#2(@zs, @s), @z) → tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) [1]
sub'#5(#false, @z, @zs) → ::(@z, @zs) [1]
sub'#5(#true, @z, @zs) → ::(#abs(#0), @zs) [1]
sum(@x, @y, @r) → sum#1(plus(plus(@x, @y), @r)) [1]
sum#1(@s) → sum#2(#equal(@s, #0), @s) [1]
sum#2(#false, @s) → sum#3(#equal(@s, #pos(#s(#0))), @s) [1]
sum#2(#true, @s) → tuple#2(#abs(#0), #abs(#0)) [1]
sum#3(#false, @s) → sum#4(#equal(@s, #pos(#s(#s(#0))))) [1]
sum#3(#true, @s) → tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1]
sum#4(#false) → tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1]
sum#4(#true) → tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1]
#add(#0, @y) → @y [0]
#add(#neg(#s(#0)), @y) → #pred(@y) [0]
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y)) [0]
#add(#pos(#s(#0)), @y) → #succ(@y) [0]
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y)) [0]
#and(#false, #false) → #false [0]
#and(#false, #true) → #false [0]
#and(#true, #false) → #false [0]
#and(#true, #true) → #true [0]
#ckgt(#EQ) → #false [0]
#ckgt(#GT) → #true [0]
#ckgt(#LT) → #false [0]
#cklt(#EQ) → #false [0]
#cklt(#GT) → #false [0]
#cklt(#LT) → #true [0]
#compare(#0, #0) → #EQ [0]
#compare(#0, #neg(@y)) → #GT [0]
#compare(#0, #pos(@y)) → #LT [0]
#compare(#0, #s(@y)) → #LT [0]
#compare(#neg(@x), #0) → #LT [0]
#compare(#neg(@x), #neg(@y)) → #compare(@y, @x) [0]
#compare(#neg(@x), #pos(@y)) → #LT [0]
#compare(#pos(@x), #0) → #GT [0]
#compare(#pos(@x), #neg(@y)) → #GT [0]
#compare(#pos(@x), #pos(@y)) → #compare(@x, @y) [0]
#compare(#s(@x), #0) → #GT [0]
#compare(#s(@x), #s(@y)) → #compare(@x, @y) [0]
#div(#0, #0) → #divByZero [0]
#div(#0, #neg(@y)) → #0 [0]
#div(#0, #pos(@y)) → #0 [0]
#div(#neg(@x), #0) → #divByZero [0]
#div(#neg(@x), #neg(@y)) → #pos(#natdiv(@x, @y)) [0]
#div(#neg(@x), #pos(@y)) → #neg(#natdiv(@x, @y)) [0]
#div(#pos(@x), #0) → #divByZero [0]
#div(#pos(@x), #neg(@y)) → #neg(#natdiv(@x, @y)) [0]
#div(#pos(@x), #pos(@y)) → #pos(#natdiv(@x, @y)) [0]
#eq(#0, #0) → #true [0]
#eq(#0, #neg(@y)) → #false [0]
#eq(#0, #pos(@y)) → #false [0]
#eq(#0, #s(@y)) → #false [0]
#eq(#neg(@x), #0) → #false [0]
#eq(#neg(@x), #neg(@y)) → #eq(@x, @y) [0]
#eq(#neg(@x), #pos(@y)) → #false [0]
#eq(#pos(@x), #0) → #false [0]
#eq(#pos(@x), #neg(@y)) → #false [0]
#eq(#pos(@x), #pos(@y)) → #eq(@x, @y) [0]
#eq(#s(@x), #0) → #false [0]
#eq(#s(@x), #s(@y)) → #eq(@x, @y) [0]
#eq(::(@x_1, @x_2), ::(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0]
#eq(::(@x_1, @x_2), nil) → #false [0]
#eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #false [0]
#eq(nil, ::(@y_1, @y_2)) → #false [0]
#eq(nil, nil) → #true [0]
#eq(nil, tuple#2(@y_1, @y_2)) → #false [0]
#eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) → #false [0]
#eq(tuple#2(@x_1, @x_2), nil) → #false [0]
#eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) → #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0]
#mult(#0, #0) → #0 [0]
#mult(#0, #neg(@y)) → #0 [0]
#mult(#0, #pos(@y)) → #0 [0]
#mult(#neg(@x), #0) → #0 [0]
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y)) [0]
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #0) → #0 [0]
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y)) [0]
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y)) [0]
#natdiv(#0, #0) → #divByZero [0]
#natdiv(#s(@x), #s(@y)) → #s(#natdiv(#natsub(@x, @y), #s(@y))) [0]
#natmult(#0, @y) → #0 [0]
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y)) [0]
#natsub(@x, #0) → @x [0]
#natsub(#s(@x), #s(@y)) → #natsub(@x, @y) [0]
#pred(#0) → #neg(#s(#0)) [0]
#pred(#neg(#s(@x))) → #neg(#s(#s(@x))) [0]
#pred(#pos(#s(#0))) → #0 [0]
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x)) [0]
#sub(@x, #0) → @x [0]
#sub(@x, #neg(@y)) → #add(@x, #pos(@y)) [0]
#sub(@x, #pos(@y)) → #add(@x, #neg(@y)) [0]
#succ(#0) → #pos(#s(#0)) [0]
#succ(#neg(#s(#0))) → #0 [0]
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x)) [0]
#succ(#pos(#s(@x))) → #pos(#s(#s(@x))) [0]
| #abs :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #0 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #neg :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #pos :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #s :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #equal :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #false:#true #eq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #false:#true #greater :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #false:#true #ckgt :: #EQ:#GT:#LT → #false:#true #compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #EQ:#GT:#LT #less :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #false:#true #cklt :: #EQ:#GT:#LT → #false:#true times :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero plus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero minus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero add' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero add'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero :: :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero add'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero nil :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero add'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sum :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero tuple#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero bitToInt :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero bitToInt' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero bitToInt'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero compare#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero compare#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero compare#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero compare#4 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #false :: #false:#true #true :: #false:#true compare#5 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero compare#6 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero diff :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero mod :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero diff#1 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero leq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #false:#true mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero mult#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero mult#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero mult#3 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero mult3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → a → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub'#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sub'#5 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sum#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sum#2 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sum#3 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero sum#4 :: #false:#true → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #pred :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #succ :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #and :: #false:#true → #false:#true → #false:#true #EQ :: #EQ:#GT:#LT #GT :: #EQ:#GT:#LT #LT :: #EQ:#GT:#LT #divByZero :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #natdiv :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #natmult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero #natsub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero → #0:#neg:#pos:#s::::nil:tuple#2:#divByZero |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
bitToInt
leq
mult3
sub
sub#1
mult
plus
#equal
#abs
times
bitToInt'
div
diff
compare
#less
sum
#greater
minus
sub'
bitToInt'#1
sum#1
sub'#1
sum#2
mod
diff#1
compare#1
mult#1
sub'#2
sum#3
sum#4
mult#2
compare#2
sub'#3
mult#3
sub'#4
compare#3
add
sub'#5
add'
compare#4
add'#1
compare#5
compare#6
add'#2
add'#3
#add
#and
#ckgt
#cklt
#compare
#div
#eq
#mult
#natdiv
#natmult
#natsub
#pred
#sub
#succ
#add(v0, v1) → null_#add [0]
#and(v0, v1) → null_#and [0]
#ckgt(v0) → null_#ckgt [0]
#cklt(v0) → null_#cklt [0]
#compare(v0, v1) → null_#compare [0]
#div(v0, v1) → null_#div [0]
#eq(v0, v1) → null_#eq [0]
#mult(v0, v1) → null_#mult [0]
#natdiv(v0, v1) → null_#natdiv [0]
#natmult(v0, v1) → null_#natmult [0]
#natsub(v0, v1) → null_#natsub [0]
#pred(v0) → null_#pred [0]
#sub(v0, v1) → null_#sub [0]
#succ(v0) → null_#succ [0]
#abs(v0) → null_#abs [0]
bitToInt'#1(v0, v1) → null_bitToInt'#1 [0]
sub'#1(v0, v1, v2) → null_sub'#1 [0]
sum#2(v0, v1) → null_sum#2 [0]
diff#1(v0) → null_diff#1 [0]
compare#1(v0, v1) → null_compare#1 [0]
mult#1(v0, v1) → null_mult#1 [0]
sub'#2(v0, v1, v2, v3) → null_sub'#2 [0]
sum#3(v0, v1) → null_sum#3 [0]
sum#4(v0) → null_sum#4 [0]
compare#2(v0, v1, v2) → null_compare#2 [0]
sub'#3(v0, v1, v2) → null_sub'#3 [0]
mult#3(v0, v1, v2) → null_mult#3 [0]
sub'#4(v0, v1) → null_sub'#4 [0]
sub'#5(v0, v1, v2) → null_sub'#5 [0]
compare#4(v0, v1, v2, v3) → null_compare#4 [0]
add'#1(v0, v1, v2) → null_add'#1 [0]
compare#5(v0, v1, v2) → null_compare#5 [0]
compare#6(v0) → null_compare#6 [0]
add'#2(v0, v1, v2, v3) → null_add'#2 [0]
add'#3(v0, v1, v2) → null_add'#3 [0]
null_#add, null_#and, null_#ckgt, null_#cklt, null_#compare, null_#div, null_#eq, null_#mult, null_#natdiv, null_#natmult, null_#natsub, null_#pred, null_#sub, null_#succ, null_#abs, null_bitToInt'#1, null_sub'#1, null_sum#2, null_diff#1, null_compare#1, null_mult#1, null_sub'#2, null_sum#3, null_sum#4, null_compare#2, null_sub'#3, null_mult#3, null_sub'#4, null_sub'#5, null_compare#4, null_add'#1, null_compare#5, null_compare#6, null_add'#2, null_add'#3, const
| Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
| Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
#0 => 0
nil => 2
#false => 1
#true => 2
#EQ => 1
#GT => 2
#LT => 3
#divByZero => 1
null_#add => 0
null_#and => 0
null_#ckgt => 0
null_#cklt => 0
null_#compare => 0
null_#div => 0
null_#eq => 0
null_#mult => 0
null_#natdiv => 0
null_#natmult => 0
null_#natsub => 0
null_#pred => 0
null_#sub => 0
null_#succ => 0
null_#abs => 0
null_bitToInt'#1 => 0
null_sub'#1 => 0
null_sum#2 => 0
null_diff#1 => 0
null_compare#1 => 0
null_mult#1 => 0
null_sub'#2 => 0
null_sum#3 => 0
null_sum#4 => 0
null_compare#2 => 0
null_sub'#3 => 0
null_mult#3 => 0
null_sub'#4 => 0
null_sub'#5 => 0
null_compare#4 => 0
null_add'#1 => 0
null_compare#5 => 0
null_compare#6 => 0
null_add'#2 => 0
null_add'#3 => 0
const => 0
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#abs(z) -{ 1 }→ 1 + @x :|: @x >= 0, z = 1 + @x
#abs(z) -{ 1 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + @x
#add(z, z') -{ 0 }→ @y :|: z' = @y, z = 0, @y >= 0
#add(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#add(z, z') -{ 0 }→ #succ(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0
#add(z, z') -{ 0 }→ #succ(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0
#add(z, z') -{ 0 }→ #succ(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + @x16), @y))) :|: @x16 >= 0, z' = @y, z = 1 + (1 + (1 + (1 + @x16))), @y >= 0
#add(z, z') -{ 0 }→ #pred(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0
#add(z, z') -{ 0 }→ #pred(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + @x15), @y))) :|: z = 1 + (1 + (1 + (1 + @x15))), z' = @y, @x15 >= 0, @y >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 3 :|: @x >= 0, z = 1 + @x, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 2 :|: @x >= 0, z = 1 + @x, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#compare(z, z') -{ 0 }→ #compare(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ #compare(@y, @x) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: @x >= 0, z = 1 + @x, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' = 1 + @y, @y >= 0
#div(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#div(z, z') -{ 0 }→ 1 + #natdiv(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x >= 0, z = 1 + @x, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#eq(z, z') -{ 0 }→ #eq(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#greater(z, z') -{ 1 }→ #ckgt(3) :|: z' = 1 + @y'', @y'' >= 0, z = 0
#greater(z, z') -{ 1 }→ #ckgt(3) :|: z' = 1 + @y1, @y1 >= 0, z = 0
#greater(z, z') -{ 1 }→ #ckgt(3) :|: z = 1 + @x', @x' >= 0, z' = 0
#greater(z, z') -{ 1 }→ #ckgt(3) :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1
#greater(z, z') -{ 1 }→ #ckgt(2) :|: @y' >= 0, z' = 1 + @y', z = 0
#greater(z, z') -{ 1 }→ #ckgt(2) :|: @x2 >= 0, z = 1 + @x2, z' = 0
#greater(z, z') -{ 1 }→ #ckgt(2) :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0
#greater(z, z') -{ 1 }→ #ckgt(2) :|: z = 1 + @x5, @x5 >= 0, z' = 0
#greater(z, z') -{ 1 }→ #ckgt(1) :|: z = 0, z' = 0
#greater(z, z') -{ 1 }→ #ckgt(0) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(@x4, @y5)) :|: z' = 1 + @y5, @y5 >= 0, z = 1 + @x4, @x4 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(@x6, @y6)) :|: z = 1 + @x6, z' = 1 + @y6, @x6 >= 0, @y6 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(@y2, @x'')) :|: z = 1 + @x'', z' = 1 + @y2, @y2 >= 0, @x'' >= 0
#less(z, z') -{ 1 }→ #cklt(3) :|: @y8 >= 0, z = 0, z' = 1 + @y8
#less(z, z') -{ 1 }→ #cklt(3) :|: @y9 >= 0, z' = 1 + @y9, z = 0
#less(z, z') -{ 1 }→ #cklt(3) :|: z = 1 + @x7, @x7 >= 0, z' = 0
#less(z, z') -{ 1 }→ #cklt(3) :|: @y11 >= 0, z = 1 + @x9, z' = 1 + @y11, @x9 >= 0
#less(z, z') -{ 1 }→ #cklt(2) :|: @y7 >= 0, z = 0, z' = 1 + @y7
#less(z, z') -{ 1 }→ #cklt(2) :|: z = 1 + @x10, @x10 >= 0, z' = 0
#less(z, z') -{ 1 }→ #cklt(2) :|: z = 1 + @x11, @x11 >= 0, @y12 >= 0, z' = 1 + @y12
#less(z, z') -{ 1 }→ #cklt(2) :|: z = 1 + @x13, @x13 >= 0, z' = 0
#less(z, z') -{ 1 }→ #cklt(1) :|: z = 0, z' = 0
#less(z, z') -{ 1 }→ #cklt(0) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(@x12, @y13)) :|: @x12 >= 0, z = 1 + @x12, @y13 >= 0, z' = 1 + @y13
#less(z, z') -{ 1 }→ #cklt(#compare(@x14, @y14)) :|: z = 1 + @x14, @x14 >= 0, @y14 >= 0, z' = 1 + @y14
#less(z, z') -{ 1 }→ #cklt(#compare(@y10, @x8)) :|: z' = 1 + @y10, @y10 >= 0, z = 1 + @x8, @x8 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 1 + @y, @y >= 0
#mult(z, z') -{ 0 }→ 0 :|: @x >= 0, z = 1 + @x, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#mult(z, z') -{ 0 }→ 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(@x, 1 + 0) :|: @x >= 0, z = 1 + @x, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(@x385, @y383), 1 + (1 + @y383)) :|: z = 1 + (1 + @x385), @x385 >= 0, z' = 1 + (1 + @y383), @y383 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z' = @y, z = 0, @y >= 0
#natmult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, #add(1 + @y, #natmult(@x386, @y))) :|: @x386 >= 0, z' = @y, @y >= 0, z = 1 + (1 + @x386)
#natsub(z, z') -{ 0 }→ @x :|: z = @x, @x >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natsub(z, z') -{ 0 }→ #natsub(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#pred(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#sub(z, z') -{ 0 }→ @x :|: z = @x, @x >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#sub(z, z') -{ 0 }→ #add(@x, 1 + @y) :|: z = @x, @x >= 0, z' = 1 + @y, @y >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#succ(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
add(z, z') -{ 2 }→ add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
add(z, z') -{ 1 }→ add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
add'(z, z', z'') -{ 1 }→ add'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(@x, @y), @r)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(@xs, @ys, @r') :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(@b, 0) :|: z = @b, @b >= 0
bitToInt(z) -{ 2 }→ bitToInt'(@b, 1 + (1 + 0)) :|: z = @b, @b >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(@b, @n) :|: z' = @n, @n >= 0, z = @b, @b >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, @n), bitToInt'(@xs, #mult(@n, 1 + (1 + (1 + 0))))) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
bitToInt'#1(z, z') -{ 1 }→ #abs(0) :|: z = 2, z' = @n, @n >= 0
compare(z, z') -{ 1 }→ compare#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
compare#1(z, z') -{ 1 }→ compare#2(@b2, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0
compare#1(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
compare#1(z, z') -{ 1 }→ #abs(0) :|: z = 2, z' = @b2, @b2 >= 0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(@xs, @ys), @x, @y) :|: z = 1 + @y + @ys, @x >= 0, @xs >= 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
compare#2(z, z', z'') -{ 1 }→ #abs(0) :|: z = 2, @x >= 0, @xs >= 0, z' = @x, z'' = @xs
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(@r, 0), @r, @x, @y) :|: @x >= 0, z = @r, @y >= 0, z' = @x, @r >= 0, z'' = @y
compare#4(z, z', z'', z1) -{ 1 }→ @r :|: z' = @r, @x >= 0, z = 1, z1 = @y, z'' = @x, @y >= 0, @r >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(@x, @y)), @x, @y) :|: z = 2, z' = @r, @x >= 0, z1 = @y, z'' = @x, @y >= 0, @r >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, @x >= 0, @y >= 0, z' = @x, z'' = @y
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(@x, @y))) :|: @x >= 0, z = 1, @y >= 0, z' = @x, z'' = @y
compare#5(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
compare#6(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
compare#6(z) -{ 1 }→ #abs(0) :|: z = 1
compare#6(z) -{ 1 }→ #abs(1 + (1 + 0)) :|: z = 2
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(@x, @y), @r), 0)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0
diff#1(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
diff#1(z) -{ 1 }→ #abs(0) :|: z = 1
diff#1(z) -{ 1 }→ #abs(1 + (1 + 0)) :|: z = 2
div(z, z') -{ 1 }→ #div(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
leq(z, z') -{ 2 }→ #less(compare#1(@b1, @b2), 1 + (1 + 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
minus(z, z') -{ 1 }→ #sub(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
mod(z, z') -{ 2 }→ minus(@x, times(@x, #div(@x, @y))) :|: z = @x, @x >= 0, z' = @y, @y >= 0
mult(z, z') -{ 1 }→ mult#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' = @b2, @b2 >= 0
mult#1(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(@x, 1 + (1 + 0)), @b2, @zs) :|: z' = @b2, @x >= 0, z = @zs, @b2 >= 0, @zs >= 0, z'' = @x
mult#3(z, z', z'') -{ 1 }→ @zs :|: z' = @b2, z = 1, @b2 >= 0, @zs >= 0, z'' = @zs
mult#3(z, z', z'') -{ 1 }→ add(@b2, @zs) :|: z = 2, z' = @b2, @b2 >= 0, @zs >= 0, z'' = @zs
mult#3(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(@b1, @b2), @b2) :|: z' = @b2, z'' = @b3, @b3 >= 0, @b2 >= 0, z = @b1, @b1 >= 0
plus(z, z') -{ 1 }→ #add(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + @r :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(@x, @y), @r), 0)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + @r :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(@xs, @ys, @r'), @z) :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), @z, @zs) + @s :|: z' = @z, z = 1 + @zs + @s, @zs >= 0, @s >= 0, @z >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + @z + @zs :|: z' = @z, z = 1, @zs >= 0, z'' = @zs, @z >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + #abs(0) + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(@x, @y), @r)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(@s, 0), @s) :|: z = @s, @s >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(@s, 1 + (1 + 0)), @s) :|: z = 1, z' = @s, @s >= 0
sum#2(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
sum#2(z, z') -{ 1 }→ 1 + #abs(0) + #abs(0) :|: z = 2, z' = @s, @s >= 0
sum#3(z, z') -{ 2 }→ sum#4(#eq(@s, 1 + (1 + (1 + 0)))) :|: z = 1, z' = @s, @s >= 0
sum#3(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
sum#3(z, z') -{ 1 }→ 1 + #abs(1 + (1 + 0)) + #abs(0) :|: z = 2, z' = @s, @s >= 0
sum#4(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
sum#4(z) -{ 1 }→ 1 + #abs(0) + #abs(1 + (1 + 0)) :|: z = 2
sum#4(z) -{ 1 }→ 1 + #abs(1 + (1 + 0)) + #abs(1 + (1 + 0)) :|: z = 1
times(z, z') -{ 1 }→ #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 1 }→ 1 + @x :|: @x >= 0, z = 1 + @x
#abs(z) -{ 1 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + @x
#abs(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#pred(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#succ(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#succ(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
compare#6(z) -{ 1 }→ #abs(0) :|: z = 1
compare#6(z) -{ 1 }→ #abs(1 + (1 + 0)) :|: z = 2
compare#6(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
diff#1(z) -{ 1 }→ #abs(0) :|: z = 1
diff#1(z) -{ 1 }→ #abs(1 + (1 + 0)) :|: z = 2
diff#1(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
sub'#5(z, z', z'') -{ 1 }→ 1 + @z + @zs :|: z' = @z, z = 1, @zs >= 0, z'' = @zs, @z >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + #abs(0) + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
sum#4(z) -{ 1 }→ 1 + #abs(1 + (1 + 0)) + #abs(1 + (1 + 0)) :|: z = 1
sum#4(z) -{ 1 }→ 1 + #abs(0) + #abs(1 + (1 + 0)) :|: z = 2
sum#4(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#abs(z) -{ 1 }→ 1 + @x :|: @x >= 0, z = 1 + @x
#abs(z) -{ 1 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + @x
#add(z, z') -{ 0 }→ @y :|: z' = @y, z = 0, @y >= 0
#add(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, v0 >= 0, @y = v0
#add(z, z') -{ 0 }→ 0 :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), 1 + (1 + @x) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), v0 >= 0, 1 + (1 + @x) = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), v0 >= 0, 1 + (1 + (1 + @x)) = v0
#add(z, z') -{ 0 }→ 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + @x16), @y))) :|: @x16 >= 0, z' = @y, z = 1 + (1 + (1 + (1 + @x16))), @y >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0
#add(z, z') -{ 0 }→ #pred(1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x))
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + @x))) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x)
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + @x15), @y))) :|: z = 1 + (1 + (1 + (1 + @x15))), z' = @y, @x15 >= 0, @y >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 3 :|: @x >= 0, z = 1 + @x, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 2 :|: @x >= 0, z = 1 + @x, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#compare(z, z') -{ 0 }→ #compare(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#compare(z, z') -{ 0 }→ #compare(@y, @x) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: @x >= 0, z = 1 + @x, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' = 1 + @y, @y >= 0
#div(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#div(z, z') -{ 0 }→ 1 + #natdiv(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x >= 0, z = 1 + @x, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#eq(z, z') -{ 0 }→ #eq(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#greater(z, z') -{ 1 }→ 2 :|: @y' >= 0, z' = 1 + @y', z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: @x2 >= 0, z = 1 + @x2, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z = 1 + @x5, @x5 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' = 1 + @y'', @y'' >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' = 1 + @y1, @y1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z = 1 + @x', @x' >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: @y' >= 0, z' = 1 + @y', z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' = 1 + @y'', @y'' >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' = 1 + @y1, @y1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z = 1 + @x', @x' >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: @x2 >= 0, z = 1 + @x2, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z = 1 + @x5, @x5 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z = @x, @x >= 0, z' = @y, @y >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(@x4, @y5)) :|: z' = 1 + @y5, @y5 >= 0, z = 1 + @x4, @x4 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(@x6, @y6)) :|: z = 1 + @x6, z' = 1 + @y6, @x6 >= 0, @y6 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(@y2, @x'')) :|: z = 1 + @x'', z' = 1 + @y2, @y2 >= 0, @x'' >= 0
#less(z, z') -{ 1 }→ 2 :|: @y8 >= 0, z = 0, z' = 1 + @y8, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: @y9 >= 0, z' = 1 + @y9, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z = 1 + @x7, @x7 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: @y11 >= 0, z = 1 + @x9, z' = 1 + @y11, @x9 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: @y7 >= 0, z = 0, z' = 1 + @y7, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z = 1 + @x10, @x10 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z = 1 + @x11, @x11 >= 0, @y12 >= 0, z' = 1 + @y12, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z = 1 + @x13, @x13 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: @y7 >= 0, z = 0, z' = 1 + @y7, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: @y8 >= 0, z = 0, z' = 1 + @y8, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: @y9 >= 0, z' = 1 + @y9, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z = 1 + @x7, @x7 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: @y11 >= 0, z = 1 + @x9, z' = 1 + @y11, @x9 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z = 1 + @x10, @x10 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z = 1 + @x11, @x11 >= 0, @y12 >= 0, z' = 1 + @y12, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z = 1 + @x13, @x13 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z = @x, @x >= 0, z' = @y, @y >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(@x12, @y13)) :|: @x12 >= 0, z = 1 + @x12, @y13 >= 0, z' = 1 + @y13
#less(z, z') -{ 1 }→ #cklt(#compare(@x14, @y14)) :|: z = 1 + @x14, @x14 >= 0, @y14 >= 0, z' = 1 + @y14
#less(z, z') -{ 1 }→ #cklt(#compare(@y10, @x8)) :|: z' = 1 + @y10, @y10 >= 0, z = 1 + @x8, @x8 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 1 + @y, @y >= 0
#mult(z, z') -{ 0 }→ 0 :|: @x >= 0, z = 1 + @x, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#mult(z, z') -{ 0 }→ 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(@x, 1 + 0) :|: @x >= 0, z = 1 + @x, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(@x385, @y383), 1 + (1 + @y383)) :|: z = 1 + (1 + @x385), @x385 >= 0, z' = 1 + (1 + @y383), @y383 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z' = @y, z = 0, @y >= 0
#natmult(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0
#natmult(z, z') -{ 0 }→ #add(1 + @y, #add(1 + @y, #natmult(@x386, @y))) :|: @x386 >= 0, z' = @y, @y >= 0, z = 1 + (1 + @x386)
#natsub(z, z') -{ 0 }→ @x :|: z = @x, @x >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#natsub(z, z') -{ 0 }→ #natsub(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#pred(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
#sub(z, z') -{ 0 }→ @x :|: z = @x, @x >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
#sub(z, z') -{ 0 }→ #add(@x, 1 + @y) :|: z = @x, @x >= 0, z' = 1 + @y, @y >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
#succ(z) -{ 0 }→ 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x))
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x)
add(z, z') -{ 2 }→ add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
add(z, z') -{ 1 }→ add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
add'(z, z', z'') -{ 1 }→ add'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(@x, @y), @r)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(@xs, @ys, @r') :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(@b, 0) :|: z = @b, @b >= 0
bitToInt(z) -{ 2 }→ bitToInt'(@b, 1 + (1 + 0)) :|: z = @b, @b >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(@b, @n) :|: z' = @n, @n >= 0, z = @b, @b >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, @n), bitToInt'(@xs, #mult(@n, 1 + (1 + (1 + 0))))) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' = @n, @n >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' = @n, @n >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
compare#1(z, z') -{ 1 }→ compare#2(@b2, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0
compare#1(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' = @b2, @b2 >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' = @b2, @b2 >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(@xs, @ys), @x, @y) :|: z = 1 + @y + @ys, @x >= 0, @xs >= 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, @x >= 0, @xs >= 0, z' = @x, z'' = @xs, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, @x >= 0, @xs >= 0, z' = @x, z'' = @xs, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(@r, 0), @r, @x, @y) :|: @x >= 0, z = @r, @y >= 0, z' = @x, @r >= 0, z'' = @y
compare#4(z, z', z'', z1) -{ 1 }→ @r :|: z' = @r, @x >= 0, z = 1, z1 = @y, z'' = @x, @y >= 0, @r >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(@x, @y)), @x, @y) :|: z = 2, z' = @r, @x >= 0, z1 = @y, z'' = @x, @y >= 0, @r >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, @x >= 0, @y >= 0, z' = @x, z'' = @y
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(@x, @y))) :|: @x >= 0, z = 1, @y >= 0, z' = @x, z'' = @y
compare#5(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
compare#6(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(@x, @y), @r), 0)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0
diff#1(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
leq(z, z') -{ 2 }→ #less(compare#1(@b1, @b2), 1 + (1 + 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
minus(z, z') -{ 1 }→ #sub(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
mod(z, z') -{ 2 }→ minus(@x, times(@x, #div(@x, @y))) :|: z = @x, @x >= 0, z' = @y, @y >= 0
mult(z, z') -{ 1 }→ mult#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' = @b2, @b2 >= 0
mult#1(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(@x, 1 + (1 + 0)), @b2, @zs) :|: z' = @b2, @x >= 0, z = @zs, @b2 >= 0, @zs >= 0, z'' = @x
mult#3(z, z', z'') -{ 1 }→ @zs :|: z' = @b2, z = 1, @b2 >= 0, @zs >= 0, z'' = @zs
mult#3(z, z', z'') -{ 1 }→ add(@b2, @zs) :|: z = 2, z' = @b2, @b2 >= 0, @zs >= 0, z'' = @zs
mult#3(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(@b1, @b2), @b2) :|: z' = @b2, z'' = @b3, @b3 >= 0, @b2 >= 0, z = @b1, @b1 >= 0
plus(z, z') -{ 1 }→ #add(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + @r :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(@x, @y), @r), 0)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + @r :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(@xs, @ys, @r'), @z) :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), @z, @zs) + @s :|: z' = @z, z = 1 + @zs + @s, @zs >= 0, @s >= 0, @z >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + @z + @zs :|: z' = @z, z = 1, @zs >= 0, z'' = @zs, @z >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(@x, @y), @r)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(@s, 0), @s) :|: z = @s, @s >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(@s, 1 + (1 + 0)), @s) :|: z = 1, z' = @s, @s >= 0
sum#2(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(@s, 1 + (1 + (1 + 0)))) :|: z = 1, z' = @s, @s >= 0
sum#3(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: v0 >= 0, z = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| { #ckgt } { sub#1 } { #pred } { #natsub } { compare#6 } { sum#4 } { #and } { sub'#5 } { #cklt } { #compare } { diff#1 } { #abs } { #succ } { #greater } { #add } { #natdiv } { #eq } { #less } { #sub } { #natmult } { plus } { #div } { sum#3 } { sub'#4 } { #equal } { minus } { #mult } { div } { sum#2 } { compare#5 } { times } { bitToInt', bitToInt'#1 } { sum#1 } { compare#4 } { mod } { bitToInt } { sum } { add'#2, add'#1, add', add'#3 } { compare#3 } { diff } { sub'#2, sub'#1, sub'#3 } { add } { compare#1, compare#2 } { sub' } { mult#3 } { leq } { compare } { sub } { mult#2 } { mult#1 } { mult } { mult3 } |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: ?, size: O(n1) [z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: ?, size: O(n1) [2 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: ?, size: O(n1) [z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: ?, size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: ?, size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: ?, size: O(n1) [1 + z' + z''] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: ?, size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#compare(z, z') -{ 0 }→ #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: ?, size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: ?, size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: ?, size: O(n1) [2 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: ?, size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#sub(z, z') -{ 0 }→ #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ #add(z, z') :|: z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: ?, size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#eq(z, z') -{ 0 }→ #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#equal(z, z') -{ 1 }→ #eq(z, z') :|: z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 2 }→ 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(#eq(z, 0), z) :|: z >= 0
sum#2(z, z') -{ 2 }→ sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 2 }→ sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: ?, size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ #sub(z, z') :|: z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: ?, size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: ?, size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 2 }→ add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 3 }→ 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 2 }→ sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 2 }→ sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: ?, size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ #div(z, z') :|: z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: ?, size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 2 }→ sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: ?, size: O(n1) [1 + z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: ?, size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 1 }→ minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 4 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 4 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: ?, size: O(n2) [1 + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ #mult(z, z') :|: z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: ?, size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: ?, size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 2 }→ sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: ?, size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 2 }→ compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: ?, size: O(n2) [1 + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 2 }→ minus(z, times(z, s62)) :|: s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: ?, size: INF bitToInt'#1: runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 1 }→ bitToInt'(z, 0) :|: z >= 0
bitToInt(z) -{ 2 }→ bitToInt'(z, 1 + (1 + 0)) :|: z >= 0
bitToInt'(z, z') -{ 1 }→ bitToInt'#1(z, z') :|: z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 3 }→ plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: ?, size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 4 }→ add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 3 }→ sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: ?, size: O(n1) [3 + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 2 }→ compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 8 }→ 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 9 }→ sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: ?, size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: ?, size: O(n1) [28 + 32·z1] add'#1: runtime: ?, size: O(n1) [32·z] add': runtime: ?, size: O(n1) [32·z] add'#3: runtime: ?, size: O(n1) [z + 32·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 2 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add(z, z') -{ 1 }→ add'(z, z', 0) :|: z' >= 0, z >= 0
add'(z, z', z'') -{ 1 }→ add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 13 }→ add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 1 }→ 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: ?, size: O(n1) [3 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: ?, size: INF sub'#1: runtime: ?, size: INF sub'#3: runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 1 }→ sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 13 }→ sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 2 }→ sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: ?, size: O(n1) [32·z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ add(z', z'') :|: z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: ?, size: O(n1) [3·z'] compare#2: runtime: ?, size: O(n1) [3·z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 1 }→ compare#1(z, z') :|: z' >= 0, z >= 0
compare#1(z, z') -{ 1 }→ compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 2 }→ compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 2 }→ #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 2 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub(z, z') -{ 1 }→ sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: ?, size: O(n1) [32·z' + z''] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 2 }→ mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: ?, size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: ?, size: O(n1) [3·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: ?, size: O(n1) [z + 32·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: ?, size: O(n2) [2 + z + 32·z·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 1 }→ mult#1(z, z') :|: z' >= 0, z >= 0
mult#1(z, z') -{ 3 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 2 }→ mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 2 }→ mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: O(n3) [1 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s112 :|: s112 >= 0, s112 <= 32 * (z * z') + 1 * z + 2, z' >= 0, z >= 0
mult#1(z, z') -{ 62 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s113 + 16·z' }→ s114 :|: s113 >= 0, s113 <= 32 * (@xs * z') + 1 * @xs + 2, s114 >= 0, s114 <= 1 * (1 + 0 + s113) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 61 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s115 + 16·z' }→ s116 :|: s115 >= 0, s115 <= 32 * (@xs * z') + 1 * @xs + 2, s116 >= 0, s116 <= 1 * (1 + 0 + s115) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 3 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ mult(s117, z') :|: s117 >= 0, s117 <= 32 * (z * z') + 1 * z + 2, z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: O(n3) [1 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s112 :|: s112 >= 0, s112 <= 32 * (z * z') + 1 * z + 2, z' >= 0, z >= 0
mult#1(z, z') -{ 62 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s113 + 16·z' }→ s114 :|: s113 >= 0, s113 <= 32 * (@xs * z') + 1 * @xs + 2, s114 >= 0, s114 <= 1 * (1 + 0 + s113) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 61 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s115 + 16·z' }→ s116 :|: s115 >= 0, s115 <= 32 * (@xs * z') + 1 * @xs + 2, s116 >= 0, s116 <= 1 * (1 + 0 + s115) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 3 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ mult(s117, z') :|: s117 >= 0, s117 <= 32 * (z * z') + 1 * z + 2, z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: O(n3) [1 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] mult: runtime: ?, size: O(n2) [2 + z + 32·z·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s112 :|: s112 >= 0, s112 <= 32 * (z * z') + 1 * z + 2, z' >= 0, z >= 0
mult#1(z, z') -{ 62 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s113 + 16·z' }→ s114 :|: s113 >= 0, s113 <= 32 * (@xs * z') + 1 * @xs + 2, s114 >= 0, s114 <= 1 * (1 + 0 + s113) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 61 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s115 + 16·z' }→ s116 :|: s115 >= 0, s115 <= 32 * (@xs * z') + 1 * @xs + 2, s116 >= 0, s116 <= 1 * (1 + 0 + s115) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 3 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ mult(s117, z') :|: s117 >= 0, s117 <= 32 * (z * z') + 1 * z + 2, z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: O(n3) [1 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] mult: runtime: O(n3) [2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s112 :|: s112 >= 0, s112 <= 32 * (z * z') + 1 * z + 2, z' >= 0, z >= 0
mult#1(z, z') -{ 62 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s113 + 16·z' }→ s114 :|: s113 >= 0, s113 <= 32 * (@xs * z') + 1 * @xs + 2, s114 >= 0, s114 <= 1 * (1 + 0 + s113) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 61 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s115 + 16·z' }→ s116 :|: s115 >= 0, s115 <= 32 * (@xs * z') + 1 * @xs + 2, s116 >= 0, s116 <= 1 * (1 + 0 + s115) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 5 + 313·s117 + 32·s117·z' + 96·s1172 + 3072·s1172·z' + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s118 :|: s118 >= 0, s118 <= 1 * s117 + 32 * (z' * s117) + 2, s117 >= 0, s117 <= 32 * (z * z') + 1 * z + 2, z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: O(n3) [1 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] mult: runtime: O(n3) [2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s112 :|: s112 >= 0, s112 <= 32 * (z * z') + 1 * z + 2, z' >= 0, z >= 0
mult#1(z, z') -{ 62 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s113 + 16·z' }→ s114 :|: s113 >= 0, s113 <= 32 * (@xs * z') + 1 * @xs + 2, s114 >= 0, s114 <= 1 * (1 + 0 + s113) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 61 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s115 + 16·z' }→ s116 :|: s115 >= 0, s115 <= 32 * (@xs * z') + 1 * @xs + 2, s116 >= 0, s116 <= 1 * (1 + 0 + s115) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 5 + 313·s117 + 32·s117·z' + 96·s1172 + 3072·s1172·z' + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s118 :|: s118 >= 0, s118 <= 1 * s117 + 32 * (z' * s117) + 2, s117 >= 0, s117 <= 32 * (z * z') + 1 * z + 2, z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: O(n3) [1 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] mult: runtime: O(n3) [2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] mult3: runtime: ?, size: INF |
#abs(z) -{ 1 }→ 0 :|: z = 0
#abs(z) -{ 0 }→ 0 :|: z >= 0
#abs(z) -{ 1 }→ 1 + (z - 1) :|: z - 1 >= 0
#abs(z) -{ 1 }→ 1 + (1 + (z - 1)) :|: z - 1 >= 0
#add(z, z') -{ 0 }→ s :|: s >= 0, s <= 1 * (1 + (1 + 0)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ s'' :|: s'' >= 0, s'' <= 1 * (1 + (1 + (z' - 3))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ s1 :|: s1 >= 0, s1 <= 1 * (1 + (1 + (1 + (z' - 2)))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0
#add(z, z') -{ 0 }→ s2 :|: s2 >= 0, s2 <= 1 * 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0
#add(z, z') -{ 0 }→ s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s26 >= 0, s26 <= 1 * s25 + 2, s27 >= 0, s27 <= 1 * s26 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + 1 * z', s29 >= 0, s29 <= 1 * s28 + 2, s30 >= 0, s30 <= 1 * s29 + 2, z - 4 >= 0, z' >= 0
#add(z, z') -{ 0 }→ z' :|: z = 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + 0), z' >= 0
#add(z, z') -{ 0 }→ 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0)
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0
#add(z, z') -{ 0 }→ 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0'
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x'))
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0
#add(z, z') -{ 0 }→ 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x)
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x')
#add(z, z') -{ 0 }→ 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0
#and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
#and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
#and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
#and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#ckgt(z) -{ 0 }→ 2 :|: z = 2
#ckgt(z) -{ 0 }→ 1 :|: z = 1
#ckgt(z) -{ 0 }→ 1 :|: z = 3
#ckgt(z) -{ 0 }→ 0 :|: z >= 0
#cklt(z) -{ 0 }→ 2 :|: z = 3
#cklt(z) -{ 0 }→ 1 :|: z = 1
#cklt(z) -{ 0 }→ 1 :|: z = 2
#cklt(z) -{ 0 }→ 0 :|: z >= 0
#compare(z, z') -{ 0 }→ s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 3 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z = 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' = 0
#compare(z, z') -{ 0 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0
#compare(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#compare(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#div(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#div(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#div(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#div(z, z') -{ 0 }→ 1 + s32 :|: s32 >= 0, s32 <= 1 * (z - 1) + 1, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
#eq(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
#eq(z, z') -{ 0 }→ 1 :|: z = 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
#eq(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0
#eq(z, z') -{ 0 }→ 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2
#eq(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#equal(z, z') -{ 1 }→ s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0
#greater(z, z') -{ 1 }→ s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0
#greater(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 2 = 2
#greater(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#greater(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 3 = 3
#greater(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#greater(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#greater(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#less(z, z') -{ 1 }→ s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0
#less(z, z') -{ 1 }→ s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z - 1 >= 0, z' = 0, 3 = 3
#less(z, z') -{ 1 }→ 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3
#less(z, z') -{ 1 }→ 1 :|: z = 0, z' = 0, 1 = 1
#less(z, z') -{ 1 }→ 1 :|: z' - 1 >= 0, z = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' = 0, 2 = 2
#less(z, z') -{ 1 }→ 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2
#less(z, z') -{ 1 }→ 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0
#less(z, z') -{ 1 }→ 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z = 0, z' - 1 >= 0
#mult(z, z') -{ 0 }→ 0 :|: z - 1 >= 0, z' = 0
#mult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#mult(z, z') -{ 0 }→ 1 + s51 :|: s51 >= 0, s51 <= 4 * (z - 1) + 4 * ((z - 1) * (z' - 1)) + 2 * (z' - 1) + 2, z - 1 >= 0, z' - 1 >= 0
#natdiv(z, z') -{ 0 }→ 1 :|: z = 0, z' = 0
#natdiv(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natdiv(z, z') -{ 0 }→ 1 + s33 :|: s33 >= 0, s33 <= 1 * (z - 1) + 1, z - 1 >= 0, z' = 1 + 0
#natdiv(z, z') -{ 0 }→ 1 + s34 :|: s34 >= 0, s34 <= 1 * s3 + 1, s3 >= 0, s3 <= 1 * (z - 2), z - 2 >= 0, z' - 2 >= 0
#natdiv(z, z') -{ 0 }→ 1 + s35 :|: s35 >= 0, s35 <= 1 * 0 + 1, z - 1 >= 0, z' - 1 >= 0
#natmult(z, z') -{ 0 }→ s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 1 * 0, z = 1 + 0, z' >= 0
#natmult(z, z') -{ 0 }→ s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 1 * 0, z - 1 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ s54 :|: s52 >= 0, s52 <= 4 * (z - 2) + 4 * ((z - 2) * z') + 2 * z' + 2, s53 >= 0, s53 <= 2 * (1 + z') + 1 * s52, s54 >= 0, s54 <= 2 * (1 + z') + 1 * s53, z - 2 >= 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z = 0, z' >= 0
#natmult(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#natsub(z, z') -{ 0 }→ s4 :|: s4 >= 0, s4 <= 1 * (z - 1), z - 1 >= 0, z' - 1 >= 0
#natsub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#natsub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#pred(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#pred(z) -{ 0 }→ 0 :|: z >= 0
#pred(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#pred(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#pred(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
#sub(z, z') -{ 0 }→ s24 :|: s24 >= 0, s24 <= 2 * z + 1 * (1 + (z' - 1)), z >= 0, z' - 1 >= 0
#sub(z, z') -{ 0 }→ z :|: z >= 0, z' = 0
#sub(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
#succ(z) -{ 0 }→ 0 :|: z = 1 + (1 + 0)
#succ(z) -{ 0 }→ 0 :|: z >= 0
#succ(z) -{ 0 }→ 1 + (1 + 0) :|: z = 0
#succ(z) -{ 0 }→ 1 + (1 + (z - 3)) :|: z - 3 >= 0
#succ(z) -{ 0 }→ 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0
add(z, z') -{ 7 + 16·z + 48·z' }→ s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0
add(z, z') -{ 6 + 16·z + 48·z' }→ s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0
add'(z, z', z'') -{ 5 + 16·z + 48·z' }→ s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0
add'#1(z, z', z'') -{ 3 + 16·@xs + 48·z' }→ s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 1 }→ 2 :|: z = 2, z' >= 0, z'' >= 0
add'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#2(z, z', z'', z1) -{ 19 + 48·@ys + 16·z1 }→ s93 :|: s93 >= 0, s93 <= 1 * s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + 1 * @y, s56 >= 0, s56 <= 2 * s55 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 1 }→ 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
add'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
add'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
add'#3(z, z', z'') -{ 6 + 16·z' + 48·z'' }→ 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
bitToInt(z) -{ 10 + 10·z }→ s79 :|: s79 >= 0, s79 <= inf, z >= 0
bitToInt(z) -{ 9 + 10·z }→ s80 :|: s80 >= 0, s80 <= inf', z >= 0
bitToInt'(z, z') -{ 3 + 10·z }→ s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0
bitToInt'#1(z, z') -{ 12 + 10·@xs }→ s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + 1 * s82, s73 >= 0, s73 <= 4 * (z' * @x) + 2 * z' + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 2 * (1 + (1 + (1 + 0))) + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0
bitToInt'#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
bitToInt'#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
bitToInt'#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare(z, z') -{ 4 + 11·z' }→ s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0
compare#1(z, z') -{ 3 + 11·z' }→ s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
compare#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
compare#1(z, z') -{ 2 }→ 0 :|: z = 2, z' >= 0, 0 = 0
compare#1(z, z') -{ 1 }→ 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0
compare#2(z, z', z'') -{ 13 + 11·@ys }→ s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= 1 * s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0
compare#2(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#2(z, z', z'') -{ 2 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0
compare#2(z, z', z'') -{ 1 }→ 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0
compare#3(z, z', z'') -{ 8 }→ s86 :|: s86 >= 0, s86 <= 1 * z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0
compare#4(z, z', z'', z1) -{ 6 }→ s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 1 }→ z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0
compare#4(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
compare#5(z, z', z'') -{ 4 }→ s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0
compare#5(z, z', z'') -{ 2 }→ s64 :|: s64 >= 0, s64 <= 2 * 0 + 1 * (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0
compare#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
compare#6(z) -{ 0 }→ 0 :|: z >= 0
compare#6(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
compare#6(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
compare#6(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
compare#6(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
compare#6(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff(z, z', z'') -{ 12 }→ 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + 1 * z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + 1 * z'', s50 >= 0, s50 <= 2 * z + 1 * z', s31 >= 0, s31 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
diff#1(z) -{ 0 }→ 0 :|: z >= 0
diff#1(z) -{ 2 }→ 0 :|: z = 1, 0 = 0
diff#1(z) -{ 1 }→ 0 :|: z = 1, v0 >= 0, 0 = v0
diff#1(z) -{ 1 }→ 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0
diff#1(z) -{ 2 }→ 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
diff#1(z) -{ 2 }→ 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x
div(z, z') -{ 1 }→ s61 :|: s61 >= 0, s61 <= 1 * z + 1, z >= 0, z' >= 0
leq(z, z') -{ 6 + 11·z' }→ s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0
minus(z, z') -{ 1 }→ s49 :|: s49 >= 0, s49 <= 2 * z + 1 * z', z >= 0, z' >= 0
mod(z, z') -{ 4 }→ s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 2 * s62 + 1, s78 >= 0, s78 <= 2 * z + 1 * s77, s62 >= 0, s62 <= 1 * z + 1, z >= 0, z' >= 0
mult(z, z') -{ 2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s112 :|: s112 >= 0, s112 <= 32 * (z * z') + 1 * z + 2, z' >= 0, z >= 0
mult#1(z, z') -{ 62 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s113 + 16·z' }→ s114 :|: s113 >= 0, s113 <= 32 * (@xs * z') + 1 * @xs + 2, s114 >= 0, s114 <= 1 * (1 + 0 + s113) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 61 + 313·@xs + 32·@xs·z' + 96·@xs2 + 3072·@xs2·z' + 48·s115 + 16·z' }→ s116 :|: s115 >= 0, s115 <= 32 * (@xs * z') + 1 * @xs + 2, s116 >= 0, s116 <= 1 * (1 + 0 + s115) + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0
mult#1(z, z') -{ 1 }→ 2 :|: z = 2, z' >= 0
mult#1(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
mult#2(z, z', z'') -{ 10 + 48·z + 16·z' }→ s111 :|: s111 >= 0, s111 <= 32 * z' + 1 * z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0
mult#3(z, z', z'') -{ 8 + 16·z' + 48·z'' }→ s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 1 }→ z'' :|: z = 1, z' >= 0, z'' >= 0
mult#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
mult3(z, z', z'') -{ 5 + 313·s117 + 32·s117·z' + 96·s1172 + 3072·s1172·z' + 313·z + 32·z·z' + 96·z2 + 3072·z2·z' }→ s118 :|: s118 >= 0, s118 <= 1 * s117 + 32 * (z' * s117) + 2, s117 >= 0, s117 <= 32 * (z * z') + 1 * z + 2, z'' >= 0, z' >= 0, z >= 0
plus(z, z') -{ 1 }→ s20 :|: s20 >= 0, s20 <= 2 * z + 1 * z', z >= 0, z' >= 0
sub(z, z') -{ 5 + 20·z }→ s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= 1 * s107, z' >= 0, z >= 0
sub(z, z') -{ 4 + 20·z }→ s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= 1 * s109, z' >= 0, z >= 0
sub#1(z) -{ 1 }→ @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0
sub'(z, z', z'') -{ 2 + 20·z }→ s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 21 + 20·@xs }→ s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#1(z, z', z'') -{ 1 }→ 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0
sub'#2(z, z', z'', z1) -{ 20 + 20·z1 }→ s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + 1 * @y, s69 >= 0, s69 <= 2 * s68 + 1 * z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + 1 * @y, s60 >= 0, s60 <= 2 * s59 + 1 * z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0
sub'#2(z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
sub'#2(z, z', z'', z1) -{ 1 }→ 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0
sub'#3(z, z', z'') -{ 7 + 20·z' }→ s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= 1 * s97 + 1 * @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0
sub'#3(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#4(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sub'#4(z, z') -{ 4 }→ 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 1 * z' + 1 * @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0
sub'#5(z, z', z'') -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0
sub'#5(z, z', z'') -{ 1 }→ 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0
sub'#5(z, z', z'') -{ 2 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0
sub'#5(z, z', z'') -{ 1 }→ 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0
sum(z, z', z'') -{ 12 }→ s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + 1 * z'', s21 >= 0, s21 <= 2 * z + 1 * z', z >= 0, z' >= 0, z'' >= 0
sum#1(z) -{ 9 }→ s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0
sum#2(z, z') -{ 7 }→ s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0
sum#2(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#2(z, z') -{ 3 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0
sum#2(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0
sum#2(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 5 }→ s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0
sum#3(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
sum#3(z, z') -{ 2 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0
sum#3(z, z') -{ 1 }→ 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0'
sum#3(z, z') -{ 3 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#3(z, z') -{ 3 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0
sum#3(z, z') -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0
sum#4(z) -{ 0 }→ 0 :|: z >= 0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 1 }→ 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0'
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 3 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x
sum#4(z) -{ 2 }→ 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 2 }→ 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
sum#4(z) -{ 3 }→ 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x'
times(z, z') -{ 1 }→ s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 2 * z' + 1, z >= 0, z' >= 0
| #ckgt: runtime: O(1) [0], size: O(1) [2] sub#1: runtime: O(1) [1], size: O(n1) [z] #pred: runtime: O(1) [0], size: O(n1) [2 + z] #natsub: runtime: O(1) [0], size: O(n1) [z] compare#6: runtime: O(1) [2], size: O(1) [3] sum#4: runtime: O(1) [3], size: O(1) [7] #and: runtime: O(1) [0], size: O(1) [2] sub'#5: runtime: O(1) [2], size: O(n1) [1 + z' + z''] #cklt: runtime: O(1) [0], size: O(1) [2] #compare: runtime: O(1) [0], size: O(1) [3] diff#1: runtime: O(1) [2], size: O(1) [3] #abs: runtime: O(1) [1], size: O(n1) [1 + z] #succ: runtime: O(1) [0], size: O(n1) [2 + z] #greater: runtime: O(1) [1], size: O(1) [2] #add: runtime: O(1) [0], size: O(n1) [2·z + z'] #natdiv: runtime: O(1) [0], size: O(n1) [1 + z] #eq: runtime: O(1) [0], size: O(1) [2] #less: runtime: O(1) [1], size: O(1) [2] #sub: runtime: O(1) [0], size: O(n1) [2·z + z'] #natmult: runtime: O(1) [0], size: O(n2) [2 + 4·z + 4·z·z' + 2·z'] plus: runtime: O(1) [1], size: O(n1) [2·z + z'] #div: runtime: O(1) [0], size: O(n1) [1 + z] sum#3: runtime: O(1) [5], size: O(1) [7] sub'#4: runtime: O(1) [4], size: O(n1) [1 + z + z'] #equal: runtime: O(1) [1], size: O(1) [2] minus: runtime: O(1) [1], size: O(n1) [2·z + z'] #mult: runtime: O(1) [0], size: O(n2) [1 + 4·z·z' + 2·z'] div: runtime: O(1) [1], size: O(n1) [1 + z] sum#2: runtime: O(1) [7], size: O(1) [7] compare#5: runtime: O(1) [4], size: O(1) [3] times: runtime: O(1) [1], size: O(n2) [1 + 4·z·z' + 2·z'] bitToInt': runtime: O(n1) [8 + 10·z], size: INF bitToInt'#1: runtime: O(n1) [2 + 10·z], size: INF sum#1: runtime: O(1) [9], size: O(1) [7] compare#4: runtime: O(1) [6], size: O(n1) [3 + z'] mod: runtime: O(1) [4], size: INF bitToInt: runtime: O(n1) [10 + 10·z], size: INF sum: runtime: O(1) [12], size: O(1) [7] add'#2: runtime: O(n1) [2 + 48·z + 16·z1], size: O(n1) [28 + 32·z1] add'#1: runtime: O(n1) [4 + 16·z + 48·z'], size: O(n1) [32·z] add': runtime: O(n1) [5 + 16·z + 48·z'], size: O(n1) [32·z] add'#3: runtime: O(n1) [6 + 16·z' + 48·z''], size: O(n1) [z + 32·z'] compare#3: runtime: O(1) [8], size: O(n1) [3 + z] diff: runtime: O(1) [12], size: INF sub'#2: runtime: O(n1) [20 + 20·z1], size: INF sub'#1: runtime: O(n1) [1 + 20·z], size: INF sub'#3: runtime: O(n1) [7 + 20·z'], size: INF add: runtime: O(n1) [7 + 16·z + 48·z'], size: O(n1) [32·z] compare#1: runtime: O(n1) [3 + 11·z'], size: O(n1) [3·z'] compare#2: runtime: O(n1) [2 + 11·z], size: O(n1) [3·z] sub': runtime: O(n1) [2 + 20·z], size: INF mult#3: runtime: O(n1) [8 + 16·z' + 48·z''], size: O(n1) [32·z' + z''] leq: runtime: O(n1) [6 + 11·z'], size: O(1) [2] compare: runtime: O(n1) [4 + 11·z'], size: O(n1) [3·z'] sub: runtime: O(n1) [5 + 20·z], size: INF mult#2: runtime: O(n1) [10 + 48·z + 16·z'], size: O(n1) [z + 32·z'] mult#1: runtime: O(n3) [1 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] mult: runtime: O(n3) [2 + 313·z + 32·z·z' + 96·z2 + 3072·z2·z'], size: O(n2) [2 + z + 32·z·z'] mult3: runtime: O(n5) [1015 + 1010·z + 34656·z·z' + 394240·z·z'2 + 192·z2 + 12288·z2·z' + 294912·z2·z'2 + 3145728·z2·z'3 + 12352·z'], size: INF |